﻿using System.Collections.Generic;
using DimsMapper.Modules;

namespace DimsMapper
{
    class ProtoSet
    {
        // локальные загруженные прототипов
        int[][] localProtoList = new int[6][]; // содержит значение 1, если на текущей карте имеется объект с данным прототипом
        int[] localCount = new int[6];

        public ProtoSet()
        {
            for (int i = 0; i < 6; i++)
            {
                int count = (i == (int)Object.Types.Tiles) ? LstFiles.FrmTotalCount(Object.Types.Tiles) : LstFiles.ProTotalCount((Object.Types)i);
                localProtoList[i] = new int[count];
            }
        }

        public void SetLocal(Object.Types type, int lstIndex)
        {
            if (localProtoList[(int)type][lstIndex] == 0) {
                localProtoList[(int)type][lstIndex] = 1;
                localCount[(int)type]++;
            }
        }

        public bool LoadProto(Object.Types type, int lstIndex)
        {
            ProtoFiles.LoadProtoFile(type, lstIndex);

            SetLocal(type, lstIndex - 1);
            return true;
        }

        public bool IsLocal(Object.Types type, int lstIndex)
        {
            return localProtoList[(int)type][lstIndex - 1] != 0;
        }

        public int[] List(Object.Types type)
        {
            return localProtoList[(int)type];
        }

        public int Count()
        {
            return localCount[0] + localCount[1] + localCount[2] + localCount[3] + localCount[4] + localCount[5];
        }

        public int Count(Object.Types type)
        {
            if (type > Object.Types.Misc) type = Object.Types.Item;
            return localCount[(int)type];
        }
    }
}
